package zut.wework.utils;

import com.tencentcloudapi.wemeet.models.User;

import java.time.Instant;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
import java.util.ArrayList;
import java.util.List;

/**
 * @Classname: MeetingUtil
 * @Description: 会议相关的工具类
 * @Date: 2022/5/15
 * @Created: by ifaxcaeles
 */
public class MeetingUtil {
    /**
     * 将学号转成只含Userid的User对象
     * 注: 此处的User为腾讯会议的与会人
     *
     * @param id 学号
     * @return 腾讯会议的User对象
     */
    public static User id2user(String id) {
        User user = new User();
        user.setUserId(id);
        return user;
    }

    /**
     * 将学号转成只含Userid的User对象
     * 注: 此处的User为腾讯会议的与会人
     *
     * @param ids 学号的list集合
     * @return 腾讯会议的User对象的list集合
     */
    public static List<User> idsToUserList(List<String> ids) {
        List<User> userList = new ArrayList<>();
        for (String id : ids) {
            userList.add(id2user(id));
        }
        return userList;
    }

    /**
     * 将获取的时间戳(秒为单位)格式化为本地时间
     * e.g: 1652791047 -> 2022-05-17 20:37
     *
     * @param timeStamp e.g:1652791047
     * @return e.g:2022-05-17 20:37
     */
    public static String StampPhaseStr(String timeStamp) {
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm").withZone(ZoneId.systemDefault());
        Instant instant = Instant.ofEpochSecond(Long.parseLong(timeStamp));
        return formatter.format(instant);
    }

    /**
     * 获取本地时间的unix时间戳(秒为单位)
     */
    public static String getStringStamp() {
        return String.valueOf(Instant.now().getEpochSecond());
    }

    /**
     * 获取本地时间的unix时间戳(秒为单位)
     *
     * @param seconds 偏移秒数
     * @return Long型时间戳
     */
    public static String getStringStamp(Long seconds) {
        return String.valueOf(Instant.now().plusSeconds(seconds).getEpochSecond());
    }

    /**
     * 获取本地时间的unix时间戳(秒为单位)
     *
     * @param days 偏移天数
     * @return Long型时间戳
     */
    public static String getStringStamp(Integer days) {
        return String.valueOf(Instant.now().plus(days, ChronoUnit.DAYS).getEpochSecond());
    }

    /**
     * 获取本地时间的unix时间戳(秒为单位)
     */
    public static Long getLongStamp() {
        return Instant.now().getEpochSecond();
    }

    /**
     * 获取本地时间的unix时间戳(秒为单位)
     *
     * @param seconds 偏移秒数
     * @return Long型时间戳
     */
    public static Long getLongStamp(Long seconds) {
        return Instant.now().plusSeconds(seconds).getEpochSecond();
    }

    /**
     * 获取本地时间的unix时间戳(秒为单位)
     *
     * @param days 偏移天数
     * @return Long型时间戳
     */
    public static Long getLongStamp(Integer days) {
        return Instant.now().plus(days, ChronoUnit.DAYS).getEpochSecond();
    }
}
